package org.dromara.house.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;

import java.io.Serializable;
import java.util.List;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 园区租赁合同表
 * </p>
 *
 * @author LCH
 * @since 2025-08-26
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class ParkContract implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 租户编号（唯一标识）
     */
    private String tenantCode;

    /**
     * 企业名称
     */
    private String enterpriseName;

    /**
     * 企业简介
     */
    private String enterpriseIntro;

    /**
     * 企业地址
     */
    private String address;

    /**
     * 联系人
     */
    private String contactPerson;

    /**
     * 联系电话
     */
    private String phone;

    /**
     * 片区
     */
    private Long districtId;

    /**
     * 楼宇
     */
    private String building;

    /**
     * 楼层
     */
    private String floor;

    /**
     * 房号
     */
    private String roomNumber;

    /**
     * 社会信用代码
     */
    private String creditCode;

    /**
     * 过期时间
     */
    private Date expireTime;

    /**
     * 剩余天数（计算字段）
     */
    private Integer remainingDays;

    /**
     * 租赁面积（单位：平方米）
     */
    private Double leaseArea;

    /**
     * 租赁开始时间
     */
    private Date leaseStart;

    /**
     * 租赁结束时间
     */
    private Date leaseEnd;

    /**
     * 租期时长（单位：天）
     */
    private Integer leaseDuration;

    /**
     * 位置信息（JSON格式存储坐标）
     */
    private String locationInfo;

    /**
     * 租户状态（0正常，1停用）
     */
    private Integer tenantStatus;

    /**
     * 创建人
     */
    private Long createBy;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 修改人
     */
    private Long updateBy;

    /**
     * 修改时间
     */
    private Date updateTime;

    /**
     * 删除状态（0正常，1删除）
     */
    private Integer deleteStatus;


    private String remark;

    /**
     * 详情对象
     */
    @TableField(exist = false)
    private List<ParkContractDetails> parkContractDetails;

    /**
     * 租期状态 1、正常 2、即将到期 3、已到期 4、已退租
     */
    private Integer leaseStatus;

    /**
     * 退租对象
     *
     */
    @TableField(exist = false)
    ParkContractCheckOut parkContractCheckOut;

    /**
     * 企业详情对象
     */
    @TableField(exist = false)
    private ParkTenant parkTenant;

    /**
     * 退租id，用于校验合同是否已退租
     */
    @TableField(exist = false)
    private Long outId;
}
